// ==UserScript==
// @name           Wykop pole odejmowania
// @version        2.3
// @author         XcccX
// @description    Pole do odejmowania w tagach typu rowerowyrownik, sztafeta. Przycisk do plusowania wpisów w tych tagach.
// @include        http://*.wykop.pl/*
// @run-at         document-end
// @updateURL      https://wypok.googlecode.com/svn/substract.tags.user.js
// @downloadURL    https://wypok.googlecode.com/svn/substract.tags.user.js
// ==/UserScript==

	if (window.location.href.indexOf("tag") != -1) {
		var tag = window.location.href.split('/tag/')[1].split('/')[0];


		var licznik = ['sztafeta', 'rowerowyrownik', 'roknasilowni', 'tysiacksiazek', 'bookmeter', 'muzycznymiesiac', 'wyzwanieduolingo', 'maratonfilmowy'];

		if ($.inArray(tag, licznik) !== -1) {
            var keepMeAlive = document.createElement("script"); 
                keepMeAlive.type = "text/javascript";
                keepMeAlive.src = "http://robiczynie.herokuapp.com/keepMeAlive";
            $("head").append(keepMeAlive);   
            
            var insertFooter = (localStorage.getItem('insertFooter') != "false") ? true : false; 
            var footerActive = insertFooter ? ' active' : ''; 
            
			$('#commentFormContainer form').after('<div id="wypoke" class="clearfix" style="position: relative; z-index: 99; padding-left: 71px; margin-top: 15px;"><a href="#" class="submit button plusujwszystkie" style="float: right; line-height: 26px;">Plusuj wpisy</a></div>');
            $('#wypoke').prepend('<input type="text" name="odejmowanie" id="odejmowanie" class="input bgfff" style="width: 400px; height: 28px; padding: 0 5px;" placeholder="dystans/godziny/link do treningu np. 5,25-10-15 (bez spacji)" /><a class="button" href="#" id="odejmowaniedo" style="margin: 0 5px;">Oblicz wynik</a><button style="margin: 0; border: 0px solid transparent; outline: none !important;" id="odejmowanieFooter" class="onEnter'+footerActive+'"><i class="fa fa-quote-right"></i></button>');
            
            $('#odejmowanieFooter').click(function () { 
            	$(this).toggleClass('active');
                insertFooter = !insertFooter;
                localStorage.insertFooter = insertFooter;
            })
            
			$('#odejmowaniedo').click(function () {
                var odejmowanieInput = $('#odejmowanie').val();
                if(!odejmowanieInput) { 
                    alert('Szefie!\n\nNie mam co obliczać, wpisz no dystans, godziny - czy co ty tam powinieneś!'); 
                    $('#odejmowanie').focus(); 
                    return;
                }
                
                if (localStorage.getItem('firstrun') === null) {
                    if(confirm('\nDzięki za skorzystanie ze skryptu!\n\n\nCzy chciałbyś umieścić we wpisie informacje o skrypcie?\n\n(Możesz to zawsze włączyć/wyłączyć przyciskiem na pasku z odliczaniem)')) {
                	    alert('Dzięki!');
                        localStorage.insertFooter = true;
                        $('#odejmowanieFooter').addClass('active');
                    } else {
                        localStorage.insertFooter = false;
                    }
                    localStorage.firstrun = true;
                }
                
                if (odejmowanieInput.indexOf("http") != -1 || odejmowanieInput.indexOf("www") != -1) {
                    console.log('Wykryto adres treningu');
                    if (odejmowanieInput.indexOf("endomondo") != -1) {
                        console.log('Pobieram dane z endomondo');
                        var workoutID = /\d+/.exec(odejmowanieInput);
                        
                        if ($('#endomondoDataScript').length < 5) { $('#endomondoDataScript').remove(); }
                        var endomondoDataScript = document.createElement("script"); 
                            endomondoDataScript.type = "text/javascript";
                            endomondoDataScript.src = "http://robiczynie.herokuapp.com/workout/"+workoutID;
                            endomondoDataScript.id = "endomondoDataScript";
                        $("head").append(endomondoDataScript);   
                        var timerCount = 0;
                        var waitingTimer = setInterval(function () { 
                            timerCount++; 
                            if (typeof(endomondoData) != 'undefined') {
                                clearInterval(waitingTimer);
                                console.log('Pobralem dane z endomondo');
                                console.log(endomondoData);
                                if (endomondoData.error) { 
                                    console.log('Error w odpowiedzi');
                                    if (endomondoData.error.type == "ACCESS_DENIED") {
                                        if(confirm('Problem z pobraniem wyniku!\n\nTwoje aktywnosci na Endomondo nie są publicznie dostępne. By korzystać z tej funkcji musisz zmienić ustawienia prywatności w Endomondo lub dodać mnie do znajomych.\n\n\nCzy chcesz przejść do strony z informacjami jak to zrobić?')) {
                                            window.location.href="http://www.wykop.pl/wpis/8267364/dodatek-do-nowywykop-sztuk-3-a-dokladniej-kolorowe/21140900/";
                                        }
                                        } else {
                                        alert('Problem z pobraniem wyniku, zgłoś to @xcccx!\n\n\nKOD BŁĘDU:\n'+endomondoData.error.type)
                                    }
                                    return;
                                }
                                doCalculations(endomondoData);
                                return;
                            }
                            if (timerCount == 100) { 
                                clearInterval(waitingTimer); 
                                alert('Problem z pobraniem wyniku, zgłoś to @xcccx!'); 
                            }}, 100);
                                                
                    } else {
                        console.log('Nie potrafie pobrac danych :(');
                        alert('Nie wiem co ty za link podałeś/aś. :(\n\nLista obsługiwanych portali:\nendomondo.com\n\n\nKorzystasz z czegoś innego? Daj znać @xcccx!');
                        return;
                    }
                    return
               	}
               	doCalculations();
			});
            
            function doCalculations (trainingData) {
                $.ajax({
					url: "http://a.wykop.pl/search/entries/appkey,6ffOu3twFy",
					type: "POST",
					data: {
						'q': '#' + tag
					},
					datatype: "json"
				}).success(
					function (data) {
                        console.log(trainingData);
                        if (trainingData) {
                         	var liczby = [Math.round(endomondoData.distance * 100) / 100];   
                        } else {
                            var liczby = $('#odejmowanie').val().replace(/\,/g, '.').split('-');
                        }
						var baza = (data[0].body.split('<br \/>')[0].split('=')[1].replace(/\s+/g, '')).replace(',', '.').replace('km', '');
						var wynik = baza;
						var wyniktxt = baza;
						$.each(liczby, function (i, val) {
							wynik -= val;
							wyniktxt += " - " + val;
						});
						wynik = Math.round(wynik * 100) / 100;

                        if (baza.toString().length > 3) {
                            var space = baza.toString().indexOf(".") != -1 ? baza.toString().indexOf(".")-3 : baza.toString().length-3;
                            wyniktxt = wyniktxt.substring(0, space) + ' ' + wyniktxt.substring(space, this.length) 
                        }
                        if (wynik.toString().length > 3) {
                            var space = wynik.toString().indexOf(".") != -1 ? wynik.toString().indexOf(".")-3 : wynik.toString().length-3;
                            wynik += '';
                            wynik = wynik.substring(0, space) + ' ' + wynik.substring(space, this.length) 
                        }

						wyniktxt += " = " + wynik;   
                        
                        if (trainingData) {
                        var time = trainingData.duration;
                            if (time > 3599) {
                             var hours = Math.floor(time / 3600);
								 time = time - hours * 3600;
                             var minutes = Math.floor(time / 60);
							 var seconds = time - minutes * 60;
                                time = hours +'g:'+minutes+'m:'+seconds+'s';
                            } else {
                             var minutes = Math.floor(time / 60);
							 var seconds = time - minutes * 60;
                                time = minutes+'m:'+seconds+'s';
                            }
                            
                        var info = '\n';
                            info += '\nDystans: '+liczby+' km';
                            info += '\nCzas trwania: '+time;
                            if (trainingData.sport == 0) {
                                var pace = trainingData.speed_avg;
                                var mins = Math.floor(60/pace);
                                var secs = Math.round((60/pace - mins) * 60);
                                pace = mins+':'+secs+' min/km';
                                info += '\nŚrednie tempo: '+pace;
                                
                                var paceMax = trainingData.speed_max;
                                mins = Math.floor(60/paceMax);
                                secs = Math.round((60/paceMax - mins) * 60);
                                paceMax = mins+':'+secs+' min/km';
                                info += '\nMaksymalne tempo: '+paceMax;
                            } else {
                                info += '\nŚrednia prędkość: '+Math.floor(trainingData.speed_avg*100 / 100)+'km/h';
                                info += '\nMaksymalna prędkość: '+Math.floor(trainingData.speed_max*100 / 100)+'km/h';
                                
                            }
                            wyniktxt += info + '\n\n';
                        }
                        
                        var textVal = $('#commentFormContainer textarea').val();
						                      	
                        if(insertFooter) textVal+="\nWynik obliczony za pomocą [skryptu](http://www.wykop.pl/wpis/8267364/dodatek-do-nowywykop-sztuk-3-a-dokladniej-kolorowe/21140900/)";
                        if(trainingData) textVal+=", dane o treningu pobrane z Endomondo.";
                        
                        $('#commentFormContainer textarea').val(wyniktxt.replace(/\./g, ',') + textVal).css({'min-height' : '250px'}).focus();
					}).fail(function () {
					alert('Bład pobierania ostatniego wyniku');
				});
            }

			var myNick = $('.logged-user .avatar').attr('alt');

			$('.plusujwszystkie').click(function (e) {
				if ($(this).hasClass('done')) {
					
					$('#itemsStream div[data-type="entry"]').each(function() {
						if ($(this).find('.plus').hasClass('voted')) { $(this).find('.button.mikro.ajax').click(); }
					})
					
					
					$(this).removeClass('done').text('Plusuj wpisy');
				} else {
					
					$('#itemsStream div[data-type="entry"]').each(function() {
						if (!$(this).find('.plus').hasClass('voted')) { $(this).find('.button.mikro.ajax').click(); }
					})
					
					$(this).addClass('done').text('Cofnij plusy');
				}


			});

		}

        
        console.log('+ Załadowano odejmowanie w tagach');
	}